{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 并发和并行\n",
    "并发是指计算机看起来同一时刻运行多个程序。即使在单核cpu上，操作系统也会以分时间片的方式轮流执行多个程序，由于cpu速度非常，所以宏观上就是多个程序看起来同时在运行。\n",
    "\n",
    "并行是指计算机真的是同一时刻运行多个程序。在多核cpu的情况下就可以做到微观上同一时刻运行多个程序。\n",
    "\n",
    "并行可以显著的提高程序任务的执行速度。而并发无论分成多少个线程，但是整体的任务执行速度并没有多少提升。即使如此，并发的意义是很大的，它实现了即使在单cpu的情况下，多个程序可以同时运行，实现了对各种资源的充分里利用。在设计程序时要搞清楚并发和并行的区别，以便做出合适的选择。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU内核数量：8\n"
     ]
    }
   ],
   "source": [
    "#查看cpu内核\n",
    "from multiprocessing import cpu_count\n",
    "print(\"CPU内核数量：%s\" % cpu_count()) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 多进程\n",
    "在计算机操作系统中，一个进程就是一个运行着的程序，多进程技术就是如何通过运行多个程序来完成自己的任务。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 多线程\n",
    "在程序中，一个程序里面可能有多个线程，每个线程负责不同的任务，当一个线程处于阻塞状态时（比如等待一个网络数据），其它线程还可以正常运行（比如UI线程）。想并行执行线程并不容易，大部分还是并发的概念。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#假设我们开了包子铺卖包子\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
